
Artículo científico
Datos
- Datos tomados del artículo referenciado previamente.
- Fuente de datos
- En la base de datos se tienen dos grupos bajo análisis:
- Grupo Long jumpers: id 1 a 23.
- Grupo untrained men: id 24-45.
Objetivos
- Replicar análisis estadísticos aplicados en el artículo científico de interés.
- Evidenciar la relación existente entre características anatómicas de atletas vs rendimiento en salto largo.
- Evaluar otros métodos de statistical learning y compararlos con los resultados obtenidos por los autores.
Resultados adicionales con R
Distribuciones
datos %>%
select_if(is.numeric) %>%
select(-id) %>%
gather(key = "variable", value = "valor") %>%
ggplot(data = ., aes(x = valor)) +
facet_wrap(facets = ~variable, scales = "free", ncol = 4) +
geom_histogram(aes(y = ..density..), bins = 10, color = "black",
fill = "gray60") +
geom_density(fill = "gray50", alpha = 0.18) +
geom_rug() +
labs(x = "", y = "Densidad") +
theme_light() +
theme(strip.background = element_rect(fill = "deepskyblue4"),
strip.text = element_text(color = "black"))

Gráficos cuantil cuantil

Comparativos
- Se comparan registros de cross-sectional area (CSA) de la pierna de despeque (takeoff) vs la pierna libre (free). Las variables (músculos) a comparar son las siguientes:
- RA: recto abdominal.
- OB: oblicuos internos y externos.
- PM: psoas mayor.
- QL: cuadrado lumbar.
- ES: erector spinae.
- Gmax: gluteo mayor.
- Gmed: gluteos medio y mínimo.
- IL: iliaco
df_takeoff_leg <- datos %>%
select(RA_takeof_leg:IL_takeof_leg) %>%
gather(key = "variable", value = "valor") %>%
mutate(tipo = "TakeoffLeg")
df_free_leg <- datos %>%
select(RA_free_leg:IL_free_leg) %>%
gather(key = "variable", value = "valor") %>%
mutate(tipo = "FreeLeg")
df_takeoff_free <- df_takeoff_leg %>%
bind_rows(df_free_leg)
df_takeoff_free %>%
separate(col = variable, into = c("variable", "v1", "v2")) %>%
select(-c(v1, v2)) %>%
ggplot(data = ., aes(x = tipo, y = valor, fill = tipo)) +
facet_wrap(facets = ~variable, scales = "free", ncol = 4) +
geom_boxplot(color = "black") +
scale_fill_manual(values = c("darkgreen", "gold4")) +
labs(x = "Tipo de pierna", y = "") +
theme_light() +
theme(strip.background = element_rect(fill = "deepskyblue4"),
strip.text = element_text(color = "black"),
legend.position = "none")

Shapiro Wilk
Se comprueba la normalidad de las variables (\(\alpha = 0.05\)), bajo el siguiente juego de hipótesis:
\[H_0: X \sim N(\mu, \sigma^2)\\
H1: x \nsim N(\mu, \sigma^2)\]
Matriz de correlaciones
- Se construye la matriz de correlaciones (método de *Pearson).
- La variable que presente mayor correlación lineal con la longitud del salto, será tenida en cuenta para estructurar el modelo de regresión lineal simple (RLS). Con las demás variables se construye el modelo de regresión lineal múltiple (RLM).
- Para la construcción del modelo de RLM se comprueba la multicolinealidad de las variables y se proponen dos alternativas:
LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBkZSBSZWdyZXNpw7NuIGNvbiBSIg0Kc3VidGl0bGU6ICJDb21wYXJhY2nDs24gZGUgbW9kZWxvcyBkZSByZWdyZXNpw7NuIGNvbiBSIg0KYXV0aG9yOiAiRWRpbWVyIERhdmlkIEphcmFtaWxsbyINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICBjc3M6IGNzcy9lc3RpbG8uY3NzDQogICAgdGhlbWU6IGNvc21vDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGZpZy5hbGlnbiA9ICJjZW50ZXIiLA0KICAgICAgICAgICAgICAgICAgICAgIGZpZy53aWR0aCA9IDguNSwNCiAgICAgICAgICAgICAgICAgICAgICBmaWcuaGVpZ2h0ID0gNSwNCiAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZSA9IFRSVUUpDQpgYGANCg0KPGltZyBzcmM9ImltZy9zY2llbmNlLnBuZyIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7cmlnaHQ6MzBweDsgd2lkdGg6MTUwcHgiIC8+DQoNCiMgQXJ0w61jdWxvIGNpZW50w61maWNvDQoNCjxjZW50ZXI+DQo8aW1nIHNyYyA9ICJpbWcvcGFwZXIucG5nIiAvPg0KPC9jZW50ZXI+DQoNCiMgRGF0b3MNCg0KLSBEYXRvcyB0b21hZG9zIGRlbCBhcnTDrWN1bG8gcmVmZXJlbmNpYWRvIHByZXZpYW1lbnRlLg0KLSBbRnVlbnRlIGRlIGRhdG9zXShodHRwczovL2pvdXJuYWxzLnBsb3Mub3JnL3Bsb3NvbmUvYXJ0aWNsZT9pZD0xMC4xMzcxL2pvdXJuYWwucG9uZS4wMjI1NDEzI3BvbmUtMDIyNTQxMy1nMDAxKQ0KLSBFbiBsYSBiYXNlIGRlIGRhdG9zIHNlIHRpZW5lbiBkb3MgZ3J1cG9zIGJham8gYW7DoWxpc2lzOg0KICAgIC0gKipHcnVwbyAqTG9uZyBqdW1wZXJzKjoqKiBpZCAxIGEgMjMuDQogICAgLSAqKkdydXBvICp1bnRyYWluZWQgbWVuKjoqKiBpZCAyNC00NS4NCg0KIyBMZWN0dXJhIGRlIGRhdG9zDQoNCmBgYHtyfQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmRhdG9zIDwtIHJlYWRfeGxzeCgiLi4vZGF0YS9EYXRhX1BhcGVyX1Bsb3NfT25lX011c2NsZS54bHN4Iiwgc2tpcCA9IDMsDQogICAgICAgICAgICAgICAgICAgbmEgPSAiTi9BIiwgbl9tYXggPSA0NykgJT4lIA0KICByZW5hbWUoUkFfdGFrZW9mX2xlZyA9IFJBLi4uNywNCiAgICAgICAgIE9CX3Rha2VvZl9sZWcgPSBPQi4uLjgsDQogICAgICAgICBQTV90YWtlb2ZfbGVnID0gUE0uLi45LA0KICAgICAgICAgUUxfdGFrZW9mX2xlZyA9IFFMLi4uMTAsDQogICAgICAgICBFU190YWtlb2ZfbGVnID0gRVMuLi4xMSwNCiAgICAgICAgIEdtYXhfdGFrZW9mX2xlZyA9IEdtYXguLi4xMiwNCiAgICAgICAgIEdtZWRfdGFrZW9mX2xlZyA9IEdtZWQuLi4xMywNCiAgICAgICAgIElMX3Rha2VvZl9sZWcgPSBJTC4uLjE0LA0KICAgICAgICAgUkFfZnJlZV9sZWcgPSBSQS4uLjE1LA0KICAgICAgICAgT0JfZnJlZV9sZWcgPSBPQi4uLjE2LA0KICAgICAgICAgUE1fZnJlZV9sZWcgPSBQTS4uLjE3LA0KICAgICAgICAgUUxfZnJlZV9sZWcgPSBRTC4uLjE4LA0KICAgICAgICAgRVNfZnJlZV9sZWcgPSBFUy4uLjE5LA0KICAgICAgICAgR21heF9mcmVlX2xlZyA9IEdtYXguLi4yMCwNCiAgICAgICAgIEdtZWRfZnJlZV9sZWcgPSBHbWVkLi4uMjEsDQogICAgICAgICBJTF9mcmVlX2xlZyA9IElMLi4uMjIsDQogICAgICAgICBpZCA9IElELA0KICAgICAgICAgZWRhZCA9IGBBZ2UgKHllYXJzKWAsDQogICAgICAgICBhbHR1cmFfY20gPSBgSGVpZ2h0IChjbSlgLA0KICAgICAgICAgaW1jID0gYEJvZHkgbWFzcyAoa2cpYCwNCiAgICAgICAgIGRpc3Rfc2FsdG9fY20gPSBgbG9uZyBqdW1wIGRpc3RhbmNlIChjbSlgLA0KICAgICAgICAgc3ByaW50XzEwMG1fc2Vjb25kcyA9IGAxMDAtbSBzcHJpbnQgdGltZSAocylgLA0KICAgICAgICAgZ3Jhc2Ffc3ViY3V0X2NtMiA9IGBTdWJjdXRhbmVvdXMgZmF0IENTQSAoYWJzb2x1dGUgdmFsdWUsIGNtMilgKSAlPiUgDQogIG11dGF0ZSh0eXBlID0gaWZfZWxzZShpZCAlaW4lIGMoMToyMyksIHRydWUgPSAiTG9uZyBqdW1wZXJzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlID0gIlVudHJhaW5lZCBtZW4iKSkNCmRhdG9zDQpgYGANCg0KIyBPYmpldGl2b3MNCg0KLSBSZXBsaWNhciBhbsOhbGlzaXMgZXN0YWTDrXN0aWNvcyBhcGxpY2Fkb3MgZW4gZWwgYXJ0w61jdWxvIGNpZW50w61maWNvIGRlIGludGVyw6lzLg0KLSBFdmlkZW5jaWFyIGxhIHJlbGFjacOzbiBleGlzdGVudGUgZW50cmUgY2FyYWN0ZXLDrXN0aWNhcyBhbmF0w7NtaWNhcyBkZSBhdGxldGFzIHZzIHJlbmRpbWllbnRvIGVuIHNhbHRvIGxhcmdvLg0KLSBFdmFsdWFyIG90cm9zIG3DqXRvZG9zIGRlIFsqc3RhdGlzdGljYWwgbGVhcm5pbmcqXShodHRwczovL2VkaW1lci5naXRodWIuaW8vZG9jdW1lbnRzX1IvTGluZWFyTW9kZWxzX0xlYXN0U3F1YXJlcy9MaW5lYXJNb2RlbHNfTGVhc3RTcWF1YXJlcy5odG1sIzEpIHkgY29tcGFyYXJsb3MgY29uIGxvcyByZXN1bHRhZG9zIG9idGVuaWRvcyBwb3IgbG9zIGF1dG9yZXMuDQoNCiMgUmVzdWx0YWRvcyBkZWwgKnBhcGVyKiANCg0KIyMgQ29ycmVsYWNpb25lcyANCg0KLSBBdW5xdWUgZnVlcm9uIG51bWVyb3NvcyBsb3MgcmVzdWx0YWRvcyBvYnRlbmlkb3MgcG9yIGxvcyBhdXRvcmVzLCBwYXJhIGVsIG9iamV0aXZvIGRlIGVzdGUgZG9jdW1lbnRvIHNlIGRlc3RhY2FuIGxvcyBzaWd1aWVudGVzOg0KICAgIC0gTGEgcmVsYWNpw7NuIGVudHJlIGVsIMOhcmVhIHRyYW5zdmVyc2FsIHJlbGF0aXZhIChDU0EpIGRlbCByZWN0byBhYmRvbWluYWwgKEFSKSBkZWwgbGFkbyBkZSBsYSBwaWVybmEgZGUgZGVzcGVndWUgeSBlbCBtZWpvciByZWdpc3RybyBwZXJzb25hbCBwYXJhIGVsIHNhbHRvIGxhcmdvLg0KICAgICAgICAtICoqQ29ycmVsYWNpw7NuOioqIDAuNjc0DQogICAgICAgIC0gKipWYWxvciBwOioqIDAuMDA0IChlc3RhZMOtc3RpY2FtZW50ZSBzaWduaWZpY2F0aXZvKQ0KDQotIExhcyBjb3JyZWxhY2lvbmVzIChjb24gaW50ZXJ2YWxvIGRlIGNvbmZpYW56YSBkZWwgOTUlKSBzZSBwcmVzZW50YW4gZW4gbGEgc2lndWllbnRlIHRhYmxhOg0KDQo8Y2VudGVyPg0KPGltZyBzcmMgPSAiaW1nL2NvcnJlbGF0aW9ucy5wbmciLz4NCjwvY2VudGVyPg0KDQojIyBHcsOhZmljbyBkZSBkaXNwZXJzacOzbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KIyMjIE9yaWdpbmFsDQoNCjxjZW50ZXI+DQo8aW1nIHNyYyA9ICJpbWcvcGFwZXIyLnBuZyIgd2lkdGg9IjQwMCIgLz4NCjwvY2VudGVyPg0KDQojIyMgUsOpcGxpY2EgY29uIFINCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpkYXRvcyAlPiUgDQogIGdncGxvdChkYXRhID0gLiwgYWVzKHggPSBSQV90YWtlb2ZfbGVnLCB5ID0gZGlzdF9zYWx0b19jbSkpICsNCiAgZ2VvbV9wb2ludChzaXplID0gMykgKw0KICBsYWJzKHggPSBleHByZXNzaW9uKCdSZWxhdGl2ZSBDU0Egb2YgUkEgdGFrZW9mZiBsZWcgc2lkZSAtIGNtJ14iMiIvJ2tnJ14iMi8zIiksDQogICAgICAgeSA9ICJQZXJzb25hbCBiZXN0IHJlY29yZCBvZiBsb25nIGp1bXAgKGNtKSIpICsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBGQUxTRSwgbHR5ID0gMywgbHdkID0gMSwgY29sb3IgPSAiYmxhY2siKSArDQogIHRoZW1lX2xpZ2h0KCkNCmBgYA0KDQojIyBQcmVkaWNob3MgdnMgUmVhbGVzICgqcGFwZXIqKQ0KDQo8Y2VudGVyPg0KPGltZyBzcmMgPSAiaW1nL3BhcGVyMy5wbmciIHdpZHRoPSI0MDAiIC8+DQo8L2NlbnRlcj4NCg0KIyBSZXN1bHRhZG9zIGFkaWNpb25hbGVzIGNvbiBSDQoNCiMjIERpc3RyaWJ1Y2lvbmVzDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTEwfQ0KZGF0b3MgJT4lIA0KICBzZWxlY3RfaWYoaXMubnVtZXJpYykgJT4lIA0KICBzZWxlY3QoLWlkKSAlPiUgDQogIGdhdGhlcihrZXkgPSAidmFyaWFibGUiLCB2YWx1ZSA9ICJ2YWxvciIpICU+JSANCiAgZ2dwbG90KGRhdGEgPSAuLCBhZXMoeCA9IHZhbG9yKSkgKw0KICBmYWNldF93cmFwKGZhY2V0cyA9IH52YXJpYWJsZSwgc2NhbGVzID0gImZyZWUiLCBuY29sID0gNCkgKw0KICBnZW9tX2hpc3RvZ3JhbShhZXMoeSA9IC4uZGVuc2l0eS4uKSwgYmlucyA9IDEwLCBjb2xvciA9ICJibGFjayIsIA0KICAgICAgICAgICAgICAgICBmaWxsID0gImdyYXk2MCIpICsNCiAgZ2VvbV9kZW5zaXR5KGZpbGwgPSAiZ3JheTUwIiwgYWxwaGEgPSAwLjE4KSArDQogIGdlb21fcnVnKCkgKw0KICBsYWJzKHggPSAiIiwgeSA9ICJEZW5zaWRhZCIpICsNCiAgdGhlbWVfbGlnaHQoKSArDQogIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJkZWVwc2t5Ymx1ZTQiKSwNCiAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIpKQ0KYGBgDQoNCiMjIEdyw6FmaWNvcyBjdWFudGlsIGN1YW50aWwNCg0KYGBge3IsIGZpZy5oZWlnaHQ9MTAsIGZpZy5hbGlnbj0iY2VudGVyIn0NCmxpYnJhcnkocXFwbG90cikNCmRhdG9zICU+JSANCiAgc2VsZWN0X2lmKGlzLm51bWVyaWMpICU+JSANCiAgc2VsZWN0KC1pZCkgJT4lIA0KICBnYXRoZXIoa2V5ID0gInZhcmlhYmxlIiwgdmFsdWUgPSAidmFsb3IiKSAlPiUgDQogIGdncGxvdChkYXRhID0gLiwgYWVzKHNhbXBsZSA9IHZhbG9yKSkgKw0KICBmYWNldF93cmFwKGZhY2V0cyA9IH52YXJpYWJsZSwgc2NhbGVzID0gImZyZWUiLCBuY29sID0gNCkgKw0KICBnZW9tX3FxX2JhbmQoZmlsbCA9ICJncmF5MjUiKSArDQogIHN0YXRfcXFfbGluZShjb2xvciA9ICJkYXJrZ3JlZW4iKSArDQogIHN0YXRfcXFfcG9pbnQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC44KSArDQogIGxhYnMoeCA9ICJDdWFudGlsZXMgdGXDs3JpY29zIiwgeSA9ICJDdWFudGlsZXMgbXVlc3RyYWxlcyIpICsNCiAgdGhlbWVfbGlnaHQoKSArDQogIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJkZWVwc2t5Ymx1ZTQiKSwNCiAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIpKQ0KYGBgDQoNCiMjIENvbXBhcmF0aXZvcw0KDQotIFNlIGNvbXBhcmFuIHJlZ2lzdHJvcyAgZGUgKmNyb3NzLXNlY3Rpb25hbCBhcmVhIChDU0EpKiBkZSBsYSBwaWVybmEgZGUgZGVzcGVxdWUgKCp0YWtlb2ZmKikgdnMgbGEgcGllcm5hIGxpYnJlICgqZnJlZSopLiBMYXMgdmFyaWFibGVzIChtw7pzY3Vsb3MpIGEgY29tcGFyYXIgc29uIGxhcyBzaWd1aWVudGVzOg0KICAgIC0gKipSQToqKiByZWN0byBhYmRvbWluYWwuDQogICAgLSAqKk9COioqIG9ibGljdW9zIGludGVybm9zIHkgZXh0ZXJub3MuDQogICAgLSAqKlBNOioqIHBzb2FzIG1heW9yLg0KICAgIC0gKipRTDoqKiBjdWFkcmFkbyBsdW1iYXIuDQogICAgLSAqKkVTOioqIGVyZWN0b3IgKnNwaW5hZSouDQogICAgLSAqKkdtYXg6KiogZ2x1dGVvIG1heW9yLg0KICAgIC0gKipHbWVkOioqIGdsdXRlb3MgbWVkaW8geSBtw61uaW1vLg0KICAgIC0gKipJTDoqKiBpbGlhY28NCg0KYGBge3IsIGZpZy5oZWlnaHQ9NS41fQ0KZGZfdGFrZW9mZl9sZWcgPC0gZGF0b3MgJT4lIA0KICBzZWxlY3QoUkFfdGFrZW9mX2xlZzpJTF90YWtlb2ZfbGVnKSAlPiUgDQogIGdhdGhlcihrZXkgPSAidmFyaWFibGUiLCB2YWx1ZSA9ICJ2YWxvciIpICU+JSANCiAgbXV0YXRlKHRpcG8gPSAiVGFrZW9mZkxlZyIpDQoNCmRmX2ZyZWVfbGVnIDwtIGRhdG9zICU+JSANCiAgc2VsZWN0KFJBX2ZyZWVfbGVnOklMX2ZyZWVfbGVnKSAlPiUgDQogIGdhdGhlcihrZXkgPSAidmFyaWFibGUiLCB2YWx1ZSA9ICJ2YWxvciIpICU+JSANCiAgbXV0YXRlKHRpcG8gPSAiRnJlZUxlZyIpDQoNCmRmX3Rha2VvZmZfZnJlZSA8LSBkZl90YWtlb2ZmX2xlZyAlPiUgDQogIGJpbmRfcm93cyhkZl9mcmVlX2xlZykNCg0KZGZfdGFrZW9mZl9mcmVlICU+JSANCiAgc2VwYXJhdGUoY29sID0gdmFyaWFibGUsIGludG8gPSBjKCJ2YXJpYWJsZSIsICJ2MSIsICJ2MiIpKSAlPiUgDQogIHNlbGVjdCgtYyh2MSwgdjIpKSAgJT4lIA0KICBnZ3Bsb3QoZGF0YSA9IC4sIGFlcyh4ID0gdGlwbywgeSA9IHZhbG9yLCBmaWxsID0gdGlwbykpICsNCiAgZmFjZXRfd3JhcChmYWNldHMgPSB+dmFyaWFibGUsIHNjYWxlcyA9ICJmcmVlIiwgbmNvbCA9IDQpICsNCiAgZ2VvbV9ib3hwbG90KGNvbG9yID0gImJsYWNrIikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJkYXJrZ3JlZW4iLCAiZ29sZDQiKSkgKw0KICBsYWJzKHggPSAiVGlwbyBkZSBwaWVybmEiLCB5ID0gIiIpICsNCiAgdGhlbWVfbGlnaHQoKSArDQogIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJkZWVwc2t5Ymx1ZTQiKSwNCiAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIpLA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQpgYGANCg0KIyMgU2hhcGlybyBXaWxrDQoNClNlIGNvbXBydWViYSBsYSBub3JtYWxpZGFkIGRlIGxhcyB2YXJpYWJsZXMgKCRcYWxwaGEgPSAwLjA1JCksIGJham8gZWwgc2lndWllbnRlIGp1ZWdvIGRlIGhpcMOzdGVzaXM6DQoNCiQkSF8wOiBYIFxzaW0gTihcbXUsIFxzaWdtYV4yKVxcDQpIMTogeCBcbnNpbSBOKFxtdSwgXHNpZ21hXjIpJCQNCg0KYGBge3J9DQpkYXRvcyAlPiUgDQogIHNlbGVjdF9pZihpcy5udW1lcmljKSAlPiUgDQogIHNlbGVjdCgtaWQpICU+JSANCiAgZ2F0aGVyKGtleSA9ICJ2YXJpYWJsZSIsIHZhbHVlID0gInZhbG9yIikgJT4lIA0KICBncm91cF9ieSh2YXJpYWJsZSkgJT4lIA0KICBzdW1tYXJpc2UodmFsb3IgPSBsaXN0KHZhbG9yKSkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBncm91cF9ieSh2YXJpYWJsZSkgJT4lIA0KICBtdXRhdGUoc2hhcGlyb192YWxvclAgPSBzaGFwaXJvLnRlc3QodW5saXN0KHZhbG9yKSkkcC52YWx1ZSkNCmBgYA0KICAgIA0KIyMgTWF0cml6IGRlIGNvcnJlbGFjaW9uZXMNCg0KLSBTZSBjb25zdHJ1eWUgbGEgbWF0cml6IGRlIGNvcnJlbGFjaW9uZXMgKG3DqXRvZG8gZGUgKlBlYXJzb24pLg0KLSBMYSB2YXJpYWJsZSBxdWUgcHJlc2VudGUgbWF5b3IgY29ycmVsYWNpw7NuIGxpbmVhbCBjb24gbGEgbG9uZ2l0dWQgZGVsIHNhbHRvLCBzZXLDoSB0ZW5pZGEgZW4gY3VlbnRhIHBhcmEgZXN0cnVjdHVyYXIgZWwgKm1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUgKFJMUykqLiBDb24gbGFzIGRlbcOhcyB2YXJpYWJsZXMgc2UgY29uc3RydXllIGVsICptb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgbcO6bHRpcGxlIChSTE0pKi4NCi0gUGFyYSBsYSBjb25zdHJ1Y2Npw7NuIGRlbCBtb2RlbG8gZGUgKlJMTSogc2UgY29tcHJ1ZWJhIGxhIG11bHRpY29saW5lYWxpZGFkIGRlIGxhcyB2YXJpYWJsZXMgeSBzZSBwcm9wb25lbiBkb3MgYWx0ZXJuYXRpdmFzOg0KICAgIC0gRWxpbWluYWNpw7NuIGRlIHZhcmlhYmxlcyBwb3IgWypmYWN0b3IgaW5mbGFjaW9uYXJpbyBkZSB2YXJpYW56YS4qXShodHRwczovL2VzLndpa2lwZWRpYS5vcmcvd2lraS9GYWN0b3JfZGVfaW5mbGFjaSVDMyVCM25fZGVfbGFfdmFyaWFuemEpDQogICAgLSBSZWdyZXNpw7NuIHBvciBjb21wb25lbnRlcyBwcmluY2lwYWxlcy4g